package com.ruoyi.web.service;


import com.plexpt.chatgpt.entity.chat.Message;
import com.ruoyi.common.ai.dto.AIChatOpenSseDTO;
import com.ruoyi.common.base.chat.domain.ChatMessage;
import com.ruoyi.common.base.chat.dto.ChatMessageAddDTO;
import com.ruoyi.common.base.chat.dto.ChatMessageAppListCondition;
import com.ruoyi.common.base.chat.vo.ChatMessageAddRes;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.List;

/**
 * 会话记录Service接口
 *
 * @author gdk
 * @date 2023-05-15
 */
public interface IChatMessageService {
    /**
     * 查询会话记录
     *
     * @param id 会话记录主键
     * @return 会话记录
     */
    public ChatMessage selectChatMessageById(Long id);

    /**
     * 查询会话记录列表
     *
     * @param chatMessage 会话记录
     * @return 会话记录集合
     */
    public List<ChatMessage> selectChatMessageList(ChatMessage chatMessage);

    /**
     * 新增会话记录
     *
     * @param chatMessage 会话记录
     * @return 结果
     */
    public int insertChatMessage(ChatMessage chatMessage);

    /**
     * 修改会话记录
     *
     * @param chatMessage 会话记录
     * @return 结果
     */
    public int updateChatMessage(ChatMessage chatMessage);

    /**
     * 批量删除会话记录
     *
     * @param ids 需要删除的会话记录主键集合
     * @return 结果
     */
    public int deleteChatMessageByIds(Long[] ids);

    /**
     * 删除会话记录信息
     *
     * @param id 会话记录主键
     * @return 结果
     */
    public int deleteChatMessageById(Long id);

    /**
     * 记录消息
     *
     * @param dto dto
     * @return {@link ChatMessageAddRes}
     * @author gdk
     * @since 2023/5/16 20:18
     */
    ChatMessageAddRes add(ChatMessageAddDTO dto);

    /**
     * 消息记录
     *
     * @param condition 条件
     * @return {@link TableDataInfo}
     * @author gdk
     * @since 2023/5/16 17:08
     */
    TableDataInfo appList(ChatMessageAppListCondition condition);

    /**
     * 初始化发送给AI的消息列表
     *
     * @param dto dto
     * @return {@link List< Message>}
     * @author gdk
     * @since 2023/5/22 14:55
     */
    List<Message> initMessageList(AIChatOpenSseDTO dto);
}
